package cn.huaqingcheng.tianshu.core.sys.model;

import cn.huaqingcheng.tianshu.common.core.model.AttributeMap;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;

import java.net.URI;
import java.time.LocalDateTime;

/**
 * 系统文件
 */
@Data
@NoArgsConstructor
@Accessors(chain = true)
public class SysFile {

    /**
     * 文件ID
     */
    private Long id;

    /**
     * 自定义 scheme 的 URI
     */
    private URI uri;

    /**
     * 文件方案
     */
    private SysFileScheme scheme;

    /**
     * 文件路径
     */
    private String path;

    /**
     * 文件查询参数
     */
    private String query;

    /**
     * 文件MIME类型
     */
    private String mimeType;

    /**
     * 文件字节数
     */
    private Long byteSize;

    /**
     * 账户ID
     */
    private Long accountId;

    /**
     * 分组ID
     */
    private Long groupId;

    /**
     * 原始文件名
     */
    private String originalName;

    /**
     * 文件属性
     */
    private AttributeMap<Object> fileAttrs;

    /**
     * 存储参数
     */
    private AttributeMap<Object> storageParams;

    /**
     * 是否公开
     */
    private Boolean isPublic;

    private LocalDateTime createdAt;

    private LocalDateTime updatedAt;

}
